package main

import (
	"gee"
	"net/http"
)

/**
go中引用自己写的模块，如果子package（某个功能模块或者说库）存在gomod文件，其他需要引用该模块时
除了要用go mod init xxx和go mod tidy 之外还需手动对其go.mod进行编辑
- 添加require信息时添加要引用的模块名和其版本号 ，版本号可以自定义
- 添加replace信息是为了指明要引用的模块相对于当前模块go.mod的路径，以便能找到要引用的模块
*/

func main() {
	//在此之前，只能通过HandleFunc方法来注册路由和对应的处理函数，
	//这种方式只能针对具体的路由写处理逻辑，比如/hello
	/*http.HandleFunc("/", indexHandler)
	http.HandleFunc("/hello", helloHandler)*/
	//在main方法中，给ListenAndServe第二个方法传入创建的engine实例，
	//那么所有的HTTP请求，就都交给了该实例处理了。
	r := gee.New()
	r.GET("/", indexHandler)
	r.GET("/hello", helloHandler)
	r.POST("/login", loginHandler)
	r.Run(":9999")
}

func loginHandler(c *gee.Context) {
	c.JSON(http.StatusOK, gee.H{
		"username": c.PostForm("username"),
		"password": c.PostForm("password"),
	})
}

func indexHandler(c *gee.Context) {
	c.HTML(http.StatusOK, "<h1>welcome gee web index!</h1>")
}

func helloHandler(c *gee.Context) {
	c.String(http.StatusOK, "hello %s, you're at %s\n", c.Query("name"), c.Path)
}
